/*
 ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1

 * The contents of this file are subject to the Mozilla Public License Version 
 * 1.1 (the "License"); you may not use this file except in compliance with 
 * the License. You may obtain a copy of the License at 
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is Blazing Games Inc. (Billy D. Spelchan) code.
 *
 * The Initial Developer of the Original Code is
 * Blazing Games Inc.
 * Portions created by the Initial Developer are Copyright (C) 1999, 2003, 2005-2006
 * the Initial Developer. All Rights Reserved.
 * 
 * Contributor(s):
 *
 ***** END LICENSE BLOCK *****
 */
package com.blazinggames.holeman;

public class Hole
extends Sprite {
// *** VARIABLES ***
  boolean bIsActive, bIsDestroyed;
  int nActiveState, nNormState;

// *** CONSTRUCTOR ***
  Hole(int x, int y, boolean bActive) {
    super(x, y, bActive);
    bIsActive = bActive;
    nActiveState = nNormState = 0;
    bIsDestroyed = false;
    nImageID = FRM_HOLE_MAKE;
  }

// *** METHODS - ACTIONS ***
  public void activateHole(int x, int y) {
    nX = x;
    nY = y;
    nActiveState = 0;
    bIsActive = true;
    bVisible = true;
  }

  public void deactivateHole(Map map) {
    map.restoreTile(getMapX(), getMapY());
    bIsActive = false;
  }

  public void destroyHole(Map map) {
    map.setTile(getMapX(), getMapY(), 0);
    bIsActive = false;
    bIsDestroyed = true;
  }

  public boolean doUpdate(Map map) {
    if (checkDelay(map.getDelay())) {
      if (bIsActive) {
        if (nActiveState < 7) {
          ++nActiveState;
          if (nActiveState == 7)
            map.setTile(getMapX(), getMapY(), 4);
          nImageID = FRM_HOLE_MAKE + nActiveState;
        }
        else {
          ++nNormState;
          if (nNormState > 3)
            nNormState = 0;
          nImageID = FRM_HOLE + nNormState;
        }
      }
      else if (nActiveState > 0) {
        --nActiveState;
        if (nActiveState == 0)
          bVisible = false;
        nImageID = FRM_HOLE_MAKE + nActiveState;
      }
    }

    return true;
  }

}
